﻿using System;
using System.IO;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Syndication;
using System.ServiceModel.Web;
using NCMIS.ObjectModel;
using NCMIS.ServiceModel.Syndication;

namespace NCMIS.ServiceModel.Ra
{
    public partial interface IService
    {
        [IncludeXmlDeclaration]
        [OperationContract(Name = "getChildren")]
        Atom10FeedFormatter GetChildren(string repositoryId, string folderId);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "createChildren")]
        Atom10ItemFormatter CreateChildren(string repositoryId, string folderId, Stream stream);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getDescendants")]
        Atom10FeedFormatter GetDescendants(string repositoryId, string folderId);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getFolderTree")]
        Atom10FeedFormatter GetFolderTree(string repositoryId, string folderId);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getFolderParent")]
        Atom10ItemFormatter GetFolderParent(string repositoryId, string folderId);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getObjectParents")]
        Atom10FeedFormatter GetObjectParents(string repositoryId, string objectId, string filter, string includeRelationships, string renditionFilter,
            bool includeAllowableActions, bool includeRelativePathSegment);

        [IncludeXmlDeclaration]
        [OperationContract(Name = "getCheckedoutDocs")]
        Atom10FeedFormatter GetCheckedoutDocs(string repositoryId);
    }
}
